package com.smartbus.bus.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.smartbus.common.annotation.Excel;
import com.smartbus.common.core.domain.BaseEntity;

/**
 * 报站记录日志，记录每次报站的详细信息，用于运营分析和故障排查对象 announcement_logs
 * 
 * @author ruoyi
 * @date 2025-09-24
 */
public class AnnouncementLogs extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID，自增 */
    private Long id;

    /** 公交车ID，关联buses表 */
    @Excel(name = "公交车ID，关联buses表")
    private Long busId;

    /** 线路ID，关联bus_routes表 */
    @Excel(name = "线路ID，关联bus_routes表")
    private Long routeId;

    /** 站点ID，关联bus_stations表 */
    @Excel(name = "站点ID，关联bus_stations表")
    private Long stationId;

    /** 报站类型ID，关联announcement_types表 */
    @Excel(name = "报站类型ID，关联announcement_types表")
    private Long announcementTypeId;

    /** 语音文件ID，关联voice_files表 */
    @Excel(name = "语音文件ID，关联voice_files表")
    private Long voiceFileId;

    /** 播放语言ID，关联language_types表 */
    @Excel(name = "播放语言ID，关联language_types表")
    private Long languageId;

    /** 播放时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "播放时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date playTime;

    /** 播放状态：成功/失败/手动触发 */
    @Excel(name = "播放状态：成功/失败/手动触发")
    private String playStatus;

    /** 播放时的GPS纬度 */
    @Excel(name = "播放时的GPS纬度")
    private BigDecimal gpsLatitude;

    /** 播放时的GPS经度 */
    @Excel(name = "播放时的GPS经度")
    private BigDecimal gpsLongitude;

    /** GPS精度(米) */
    @Excel(name = "GPS精度(米)")
    private BigDecimal gpsAccuracy;

    /** 是否手动触发，1-手动 0-自动 */
    @Excel(name = "是否手动触发，1-手动 0-自动")
    private Integer isManualTrigger;

    /** 播放失败时的错误信息 */
    @Excel(name = "播放失败时的错误信息")
    private String errorMessage;

    /** 司机工号 */
    @Excel(name = "司机工号")
    private String driverId;

    /** 记录创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "记录创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 站点名称（关联查询字段，不存储到数据库） */
    private String stationName;

    /** 线路名称（关联查询字段，不存储到数据库） */
    private String routeName;

    /** 公交车牌号（关联查询字段，不存储到数据库） */
    private String busPlateNumber;

    /** 报站类型名称（关联查询字段，不存储到数据库） */
    private String announcementTypeName;

    /** 语音文件路径（关联查询字段，不存储到数据库） */
    private String voiceFilePath;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setBusId(Long busId) 
    {
        this.busId = busId;
    }

    public Long getBusId() 
    {
        return busId;
    }

    public void setRouteId(Long routeId) 
    {
        this.routeId = routeId;
    }

    public Long getRouteId() 
    {
        return routeId;
    }

    public void setStationId(Long stationId) 
    {
        this.stationId = stationId;
    }

    public Long getStationId() 
    {
        return stationId;
    }

    public void setAnnouncementTypeId(Long announcementTypeId) 
    {
        this.announcementTypeId = announcementTypeId;
    }

    public Long getAnnouncementTypeId() 
    {
        return announcementTypeId;
    }

    public void setVoiceFileId(Long voiceFileId) 
    {
        this.voiceFileId = voiceFileId;
    }

    public Long getVoiceFileId() 
    {
        return voiceFileId;
    }

    public void setLanguageId(Long languageId) 
    {
        this.languageId = languageId;
    }

    public Long getLanguageId() 
    {
        return languageId;
    }

    public void setPlayTime(Date playTime) 
    {
        this.playTime = playTime;
    }

    public Date getPlayTime() 
    {
        return playTime;
    }

    public void setPlayStatus(String playStatus) 
    {
        this.playStatus = playStatus;
    }

    public String getPlayStatus() 
    {
        return playStatus;
    }

    public void setGpsLatitude(BigDecimal gpsLatitude) 
    {
        this.gpsLatitude = gpsLatitude;
    }

    public BigDecimal getGpsLatitude() 
    {
        return gpsLatitude;
    }

    public void setGpsLongitude(BigDecimal gpsLongitude) 
    {
        this.gpsLongitude = gpsLongitude;
    }

    public BigDecimal getGpsLongitude() 
    {
        return gpsLongitude;
    }

    public void setGpsAccuracy(BigDecimal gpsAccuracy) 
    {
        this.gpsAccuracy = gpsAccuracy;
    }

    public BigDecimal getGpsAccuracy() 
    {
        return gpsAccuracy;
    }

    public void setIsManualTrigger(Integer isManualTrigger) 
    {
        this.isManualTrigger = isManualTrigger;
    }

    public Integer getIsManualTrigger() 
    {
        return isManualTrigger;
    }

    public void setErrorMessage(String errorMessage) 
    {
        this.errorMessage = errorMessage;
    }

    public String getErrorMessage() 
    {
        return errorMessage;
    }

    public void setDriverId(String driverId) 
    {
        this.driverId = driverId;
    }

    public String getDriverId() 
    {
        return driverId;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt()
    {
        return createdAt;
    }

    public void setStationName(String stationName)
    {
        this.stationName = stationName;
    }

    public String getStationName()
    {
        return stationName;
    }

    public void setRouteName(String routeName)
    {
        this.routeName = routeName;
    }

    public String getRouteName()
    {
        return routeName;
    }

    public void setBusPlateNumber(String busPlateNumber)
    {
        this.busPlateNumber = busPlateNumber;
    }

    public String getBusPlateNumber()
    {
        return busPlateNumber;
    }

    public void setAnnouncementTypeName(String announcementTypeName)
    {
        this.announcementTypeName = announcementTypeName;
    }

    public String getAnnouncementTypeName()
    {
        return announcementTypeName;
    }

    public void setVoiceFilePath(String voiceFilePath)
    {
        this.voiceFilePath = voiceFilePath;
    }

    public String getVoiceFilePath()
    {
        return voiceFilePath;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("busId", getBusId())
            .append("routeId", getRouteId())
            .append("stationId", getStationId())
            .append("announcementTypeId", getAnnouncementTypeId())
            .append("voiceFileId", getVoiceFileId())
            .append("languageId", getLanguageId())
            .append("playTime", getPlayTime())
            .append("playStatus", getPlayStatus())
            .append("gpsLatitude", getGpsLatitude())
            .append("gpsLongitude", getGpsLongitude())
            .append("gpsAccuracy", getGpsAccuracy())
            .append("isManualTrigger", getIsManualTrigger())
            .append("errorMessage", getErrorMessage())
            .append("driverId", getDriverId())
            .append("createdAt", getCreatedAt())
            .toString();
    }
}
